home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Cream of the Crop 26
/
Cream of the Crop 26.iso
/
os2
/
pvm34b3.zip
/
pvm34b3
/
pvm3
/
src
/
tevmac.h
< prev
next >
Wrap
C/C++ Source or Header
|
1997-07-22
|
5KB
|
172 lines
/* $Id: tevmac.h,v 1.5 1997/06/25 22:11:13 pvmsrc Exp $ */
/*
* PVM version 3.4: Parallel Virtual Machine System
* University of Tennessee, Knoxville TN.
* Oak Ridge National Laboratory, Oak Ridge TN.
* Emory University, Atlanta GA.
* Authors: J. J. Dongarra, G. E. Fagg, M. Fischer
* G. A. Geist, J. A. Kohl, R. J. Manchek, P. Mucci,
* P. M. Papadopoulos, S. L. Scott, and V. S. Sunderam
* (C) 1997 All Rights Reserved
*
* NOTICE
*
* Permission to use, copy, modify, and distribute this software and
* its documentation for any purpose and without fee is hereby granted
* provided that the above copyright notice appear in all copies and
* that both the copyright notice and this permission notice appear in
* supporting documentation.
*
* Neither the Institutions (Emory University, Oak Ridge National
* Laboratory, and University of Tennessee) nor the Authors make any
* representations about the suitability of this software for any
* purpose. This software is provided ``as is'' without express or
* implied warranty.
*
* PVM version 3 was funded in part by the U.S. Department of Energy,
* the National Science Foundation and the State of Tennessee.
*/
/*
* tevmac.h
*
* Tracing defs.
*
$Log: tevmac.h,v $
* Revision 1.5 1997/06/25 22:11:13 pvmsrc
* Markus adds his frigging name to the author list of
* every file he ever looked at...
*
* Revision 1.4 1997/04/30 21:33:25 pvmsrc
* SGI Compiler Warning Cleanup.
* - stupid ##@%&@(... made explicit boolean expressions out of
* assignments inside TEV_EXCLUSIVE conditional. :-Q
*
* Revision 1.3 1997/01/28 19:28:35 pvmsrc
* New Copyright Notice & Authors.
*
* Revision 1.2 1996/10/24 21:49:50 pvmsrc
* Modified for New Tracing Facility:
* - added new struct pvmtrcencvec for trace event packing.
* - modified tracing macros:
* * TEV_DO_TRACE() requires 2 args now, kind & entry_exit.
* * TEV_FIN(), tev_fin() now requires no args.
* * TEV_DECLS, no need for xtrcbuf, xtrcsbf now.
* - added TEV_PACK_*() macros for trace event contents,
* for performance, uses enc_*() routines directly.
*
* Revision 1.1 1996/09/23 23:43:37 pvmsrc
* Initial revision
*
* Revision 1.1 1994/06/03 20:38:32 manchek
* Initial revision
*
*/
/*****************************
** Internal Trace Structs **
** **
*****************************/
struct pvmtrcencvec {
int (*enc_byte)();
int (*enc_cplx)();
int (*enc_dcplx)();
int (*enc_double)();
int (*enc_float)();
int (*enc_int)();
int (*enc_uint)();
int (*enc_long)();
int (*enc_ulong)();
int (*enc_short)();
int (*enc_ushort)();
int (*enc_str)();
};
void tev_init();
void tev_flush();
/*****************************
** Internal Trace Macros **
** **
*****************************/
/* to check that task is connected without a function call */
#define BEATASK ( pvmmytid == -1 ? pvmbeatask() : 0 )
/* check tracing on event kind */
#define TEV_CHECK_TRACE( _kind ) \
( !BEATASK && pvmtrc.trctid > 0 && pvmtrc.trctid != pvmmytid \
&& TEV_MASK_CHECK( pvmtrc.tmask, _kind ) )
/* check tracing and generate start message */
#define TEV_DO_TRACE( _kind, _entry_exit ) \
( TEV_CHECK_TRACE( _kind ) && tev_begin( _kind, _entry_exit ) )
#define TEV_FIN tev_fin()
#define TEV_DECLS int xamtraced;
#define TEV_EXCLUSIVE ( (xamtraced = pvmtoplvl) != 0 \
&& (pvmtoplvl = 0) == 0 )
#define TEV_AMEXCL xamtraced
#define TEV_ENDEXCL (pvmtoplvl = xamtraced)
/* packing macros */
#define TEV_PACK_BYTE( _did, _array, _datap, _cnt, _std ) \
(pvmtrccodef->enc_byte)( _did, _array, \
(void *)(_datap), _cnt, _std )
#define TEV_PACK_CPLX( _did, _array, _datap, _cnt, _std ) \
(pvmtrccodef->enc_cplx)( _did, _array, \
(void *)(_datap), _cnt, _std )
#define TEV_PACK_DCPLX( _did, _array, _datap, _cnt, _std ) \
(pvmtrccodef->enc_dcplx)( _did, _array, \
(void *)(_datap), _cnt, _std )
#define TEV_PACK_DOUBLE( _did, _array, _datap, _cnt, _std ) \
(pvmtrccodef->enc_double)( _did, _array, \
(void *)(_datap), _cnt, _std )
#define TEV_PACK_FLOAT( _did, _array, _datap, _cnt, _std ) \
(pvmtrccodef->enc_float)( _did, _array, \
(void *)(_datap), _cnt, _std )
#define TEV_PACK_INT( _did, _array, _datap, _cnt, _std ) \
(pvmtrccodef->enc_int)( _did, _array, \
(void *)(_datap), _cnt, _std )
#define TEV_PACK_UINT( _did, _array, _datap, _cnt, _std ) \
(pvmtrccodef->enc_uint)( _did, _array, \
(void *)(_datap), _cnt, _std )
#define TEV_PACK_LONG( _did, _array, _datap, _cnt, _std ) \
(pvmtrccodef->enc_long)( _did, _array, \
(void *)(_datap), _cnt, _std )
#define TEV_PACK_ULONG( _did, _array, _datap, _cnt, _std ) \
(pvmtrccodef->enc_ulong)( _did, _array, \
(void *)(_datap), _cnt, _std )
#define TEV_PACK_SHORT( _did, _array, _datap, _cnt, _std ) \
(pvmtrccodef->enc_short)( _did, _array, \
(void *)(_datap), _cnt, _std )
#define TEV_PACK_USHORT( _did, _array, _datap, _cnt, _std ) \
(pvmtrccodef->enc_ushort)( _did, _array, \
(void *)(_datap), _cnt, _std )
#define TEV_PACK_STRING( _did, _array, _datap, _cnt, _std ) \
(pvmtrccodef->enc_str)( _did, _array, \
(void *)(_datap), _cnt, _std )